[
  {
    "description": "one property is pattern for another",
    "schema": {
      "properties": {
        "shouldMatch": {},
        "string": { "pattern": { "$data": "1/shouldMatch" } }
      }
    },
    "tests": [
      {
        "description": "a matching pattern is valid",
        "data": {
          "shouldMatch": "^a*$",
          "string": "aaa"
        },
        "valid": true
      },
      {
        "description": "a non-matching pattern is invalid",
        "data": {
          "shouldMatch": "^a*$",
          "string": "abc"
        },
        "valid": false
      },
      {
        "description": "ignores non-strings",
        "data": {
          "shouldMatch": "^a*$",
          "string": 123
        },
        "valid": true
      },
      {
        "description": "fails if value of pattern is not a string",
        "data": {
          "shouldMatch": 123,
          "string": "123"
        },
        "valid": false
      },
      {
        "description": "valid if value of pattern is undefined",
        "data": {
          "string": "123"
        },
        "valid": true
      }
    ]
  },
  {
    "description": "property values should contain their names",
    "schema": {
      "additionalProperties": {
        "pattern": { "$data": "0#" }
      }
    },
    "tests": [
      {
        "description": "valid property values",
        "data": { "foo": "1foo", "bar": "bar2", "baz": "3baz4" },
        "valid": true
      },
      {
        "description": "invalid property values",
        "data": { "foo": "fo" },
        "valid": false
      }
    ]
  }
]
